package org.bes.WinClass;

import java.nio.file.*;
import java.util.*;
import static org.bes.utils.StrPathUtils.getFileVersion;


public class JarFileInfo {
    Path jarFilePath; // JAR 文件路径
    Map<String, String> contentFiles; // 文件路径 -> 版本号
    String maxVersion; // 最大版本号

    public JarFileInfo(Path jarFilePath, String version) {
        this.jarFilePath = jarFilePath;
        this.contentFiles = new HashMap<>();
        this.maxVersion = version; // 默认初始版本
    }

    // 处理文件列表，添加文件路径和版本，并更新最大版本号
    public void addVerisionAndFile(List<Path> fileList) {

        // 获取文件的版本号（这里假设版本号的获取方式为文件名中的某个部分，实际应用中可能需要通过文件内容或其他方式）
        //String version = getFileVersion(jarFilePath.toFile());
        for (Path file : fileList) {
            //System.out.println(file);
            //Path relativePath = patchDir.relativize(file);

            // 存储文件路径和版本号
            contentFiles.put(file.toString(), maxVersion);

            //// 更新最大版本号
            //updateMaxVersion(version);
        }
    }



    //// 更新 JAR 文件的最大版本号
    //public void updateMaxVersion(String version) {
    //    if (compareVersions(version, maxVersion) > 0) {
    //        maxVersion = version;
    //    }
    //}

    // 比较版本号（简单的版本号比较方法）
    private int compareVersions(String v1, String v2) {
        String[] parts1 = v1.split("\\.");
        String[] parts2 = v2.split("\\.");
        for (int i = 0; i < Math.min(parts1.length, parts2.length); i++) {
            int cmp = Integer.compare(Integer.parseInt(parts1[i]), Integer.parseInt(parts2[i]));
            if (cmp != 0) return cmp;
        }
        return Integer.compare(parts1.length, parts2.length);
    }

    @Override
    public String toString() {
        return "JarFileInfo{" +
                "jarFilePath=" + jarFilePath +
                ", contentFiles=" + contentFiles +
                ", maxVersion='" + maxVersion + '\'' +
                '}';
    }
}
